]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
popupMenu: Don't chain up vfuncs if the parent doesn't implement them
authorJonas Dreßler <verdre@v0yd.nl>
Sun, 27 Oct 2019 21:28:38 +0000 (22:28 +0100)
committerFlorian Müllner <florian.muellner@gmail.com>
Mon, 28 Oct 2019 13:43:55 +0000 (13:43 +0000)
Some vfuncs like `button_press_event`, `button_release_event` and
`touch_event` don't have handlers in the parent classes of
PopupBaseMenuItem. So don't call those handlers and return the default
Clutter.EVENT_PROPAGATE there.

This fixes a crash of the shell that happens when pressing a mouse
button inside the system popup menu and releasing it above a slider like
the volume slider again.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/787

js/ui/popupMenu.js

index 062b2bf9e072d364e70c1024e4499bfa673b3c12..fb954cda17d324adf8ca56a921202cef7e3db4df 100644 (file)
@@ -118,18 +118,18 @@ var PopupBaseMenuItem = GObject.registerClass({
         this._parent = parent;
     }
 
-    vfunc_button_press_event(buttonEvent) {
+    vfunc_button_press_event() {
         if (!this._activatable)
-            return super.vfunc_button_press_event(buttonEvent);
+            return Clutter.EVENT_PROPAGATE;
 
         // This is the CSS active state
         this.add_style_pseudo_class('active');
         return Clutter.EVENT_PROPAGATE;
     }
 
-    vfunc_button_release_event(buttonEvent) {
+    vfunc_button_release_event() {
         if (!this._activatable)
-            return super.vfunc_button_release_event(buttonEvent);
+            return Clutter.EVENT_PROPAGATE;
 
         this.remove_style_pseudo_class('active');
         this.activate(Clutter.get_current_event());
@@ -138,7 +138,7 @@ var PopupBaseMenuItem = GObject.registerClass({
 
     vfunc_touch_event(touchEvent) {
         if (!this._activatable)
-            return super.vfunc_touch_event(touchEvent);
+            return Clutter.EVENT_PROPAGATE;
 
         if (touchEvent.type == Clutter.EventType.TOUCH_END) {
             this.remove_style_pseudo_class('active');